# -*- coding: UTF-8 -*-
"""
Un serveur peut ajouter à certaines pages de Django des en-têtes HTTP personnalisés
qui contiennent des informations utiles les concernant (en particulier le type du
contenu et son identifiant).

Ce module contient des fonctions utiles qui permettent d'obtenir et manipuler de
manière intéressante ces en-têtes spéciaux (que nous appelons "en-têtes X" car
la spécification HTTP exige que les en-têtes personnalisés commencent par la chaîne
"X-").

La prochaine fois que vous irez sur Slashdot, jetez un œil aux en-têtes X-Fry et
X-Bender. :)
"""

def populate_xheaders(request, response, package, python_module_name, object_id):
    """
    Ajoute à l'objet HttpResponse spécifié deux en-têtes : "X-Object-Type" et
    "X-Object-Id"; les valeurs de ces en-têtes sont générées en fonction des
    arguments package, python_module_name et object_id. Cet ajout d'en-têtes
    personnalisés ne se fait que si l'objet HttpRequest spécifié provient d'une
    adresse IP appartenant au paramètre INTERNAL_IPS.
    """
    from django.conf.settings import INTERNAL_IPS
    if request.META['REMOTE_ADDR'] in INTERNAL_IPS:
        response['X-Object-Type'] = "%s.%s" % (package, python_module_name)
        response['X-Object-Id'] = str(object_id)
